/*
 * WorldElement.h
 *
 *  Created on: 02.10.2012
 *      Author: caffeine
 */

#ifndef WORLDELEMENT_H_
#define WORLDELEMENT_H_

#include "PosittedContainerNodeObject.h"
#include "ModelLoaderObject.h"
#include "PhysicObject.h"
#include <ISerializationObject.h>
#include "LoadControlledObject.h"


namespace irr{
namespace object{

class WorldElement:public virtual LoadControlledObject, public virtual PosittedContainerNodeObject,public virtual ModelLoaderObject,public virtual PhysicObject,public virtual ISerializationObject{
private:
	irr::f32 radius;
protected:
	virtual irr::core::stringc getSerializationNodeName();
	virtual void on_load();
	virtual void on_unload();
	virtual bool on_setPhysic(bool value){};
	virtual void on_jump(irr::f32 value){};
public:
	WorldElement(irr::scene::ISceneManager*manager,ContainerNodeObject*parent,bool sync_load);
	virtual ~WorldElement();
	virtual void setModel(ModelObject*model);
	virtual void getSerialized(irr::xml::IXmlNode*node);
	virtual irr::xml::TagResult setSerialized(irr::xml::IXmlNode*node);
	virtual irr::f32 getRadiusObjectSize();
	void setRadiusObjectSize(irr::f32 radius);
	virtual bool isLoaded();
	virtual bool isUnloaded();
};

}//namespace object
}//namespace irr
#endif /* WORLDELEMENT_H_ */
